package br.cesed.pp.system;

import java.util.LinkedList;
import java.util.List;

import br.cesed.pp.data.idata.IData;
import br.cesed.pp.data.memory.DataMemory;
import br.cesed.pp.model.Aluno;
import br.cesed.pp.model.Usuario;

/**
 * 
 * Classe gerenciadora de todos os eventos do sistema
 * 
 * @author Pacelly
 * 
 */
public class Sistema {

	/**
	 * Criado Gerenciador dos dados
	 */
	private IData dataManager;

	public Sistema() {
		dataManager = new DataMemory();
	}
	
public int getNumeroDeAlunos() {
		
		return dataManager.getNumeroDeAlunos();
		
	}

	public int getNumeroTotalDeQuestoes() {
		
		return dataManager.getNumeroTotalDeQuestoes();
	}

	public void cadastraAluno(String nome, String cpf, String end) throws Exception {
		Usuario.checaNomeVazio(nome);
		Usuario.checaCpfVazio(cpf);
		Usuario.checaCpfValido(cpf);
		dataManager.checaAlunoExistente(nome);
		dataManager.addAluno(nome, cpf, end);
		
	}

	public String getAluno(String nome) throws Exception {
		Usuario.checaNomeVazio(nome);
		return dataManager.getAluno(nome).toString();
	}

	public int getNumeroDeProfessores() {
		return dataManager.getNumeroDeProfessores();
	}

	public String getAlunoPorCPF(String cpf) throws Exception {
		Usuario.checaCpfVazio(cpf);
		Usuario.checaCpfValido(cpf);
		return dataManager.getAlunoPorCPF(cpf).toString();
	}

	public int getMatricula(String nome) throws Exception {
		Usuario.checaNomeVazio(nome);
		return dataManager.getMatricula(nome);
	}

	public String getAlunoPorMatricula(String matricula) throws Exception {
		return dataManager.getAlunoPorMatricula(matricula).toString();
	}

	public void removeAlunoPorNome(String nome) throws Exception {
		dataManager.removeAlunoPorNome(nome);
		
	}

	public void removeAlunoPorCPF(String cpf) throws Exception {
		dataManager.removeAlunoPorCPF(cpf);
		
	}

	public List<String> getAlunos() {
		return dataManager.getAlunos();
	}

	public void editaAluno(int matricula, String nome, String cpf, String end) throws Exception {
		Usuario.checaNomeVazio(nome);
		Usuario.checaCpfVazio(cpf);
		Usuario.checaCpfValido(cpf);
		dataManager.editaAluno(matricula, nome, cpf, end);
		
	}

	public void removeAlunos() {
		dataManager.removeAlunos();
		
	}

	
	
}
